home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 013 (1987-05-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 013 (1987-05-15)(Ossowski, Stefan)(DE)(PD).adf / sword / sword.txt < prev   
Text File  |  1987-03-04  |  42KB  |  881 lines

  1. 10 'The Sword of Fallen Angel -version 1.00
  2. 20 'created on feb 85 by andry rachmat
  3. 25 'ported to Amiga Jul 86
  4. 30 '
  5. 40 '*****************************************
  6. 41 'If you could not load or run the program
  7. 42 'with "OUT OF MEMORY ERROR",
  8. 43 'type CLEAR ,65000 on the output window,
  9. 44 'and try again.
  10. 45 '*****************************************
  11. 90 DEFINT a-z:DEFSTR c,o,v,p
  12. 100 DIM oi(30),oh(30),oj(30),xi(30),ei(30),ot(10),xt(10),gt(10),et(10),od(10),xd(10),gd(10),ed(10),ok(4),ol(4),om(4),xl(4),el(4),ks(4),kd(4),kw(4),kc(4),kf(4),kl(4)
  13. 110 DIM p(16),d(16,6),v(75),c(60),a$(9),ab$(6),f(50)
  14. 120 LINE INPUT "Your name :";cn:FOR i=1 TO INT(RND*500):y=INT(RND):NEXT:commfile="sword_comment.dat"
  15. 122 PRINT:LINE INPUT "Is sword_comment.dat copied to ram ?";c
  16. 125 IF c="y" OR c="Y" THEN commfile="ram:"+commfile
  17. 140 FOR i=0 TO 50:f(i)=0:NEXT:nc=60:f(21)=1:f(31)=1:f(37)=3:f(1)=1:f(2)=11
  18. 160 OPEN "i",1,"sword_item.dat"
  19. 170 INPUT#1,n:FOR i=1 TO 30:INPUT#1,oh(i),oi(i),oj(i),xi(i),ei(i):NEXT:CLOSE
  20. 172 OPEN "i",1,"sword_verb.dat"
  21. 175 FOR i=0 TO 75:INPUT#1,v(i):NEXT:FOR i=1 TO nc:INPUT#1,c(i):NEXT:CLOSE:p(0)=c(55):FOR i=1 TO 4:d(0,i)=1000:NEXT 
  22. 180 c="sword_set"+MID$(STR$(f(1)),2,LEN(STR$(f(1)))-1)+".dat"
  23. 181 OPEN "i",1,c
  24. 182 FOR i=1 TO 16:INPUT#1,p(i):FOR j=0 TO 6:INPUT#1,d(i,j):NEXT j:NEXT i
  25. 190 INPUT#1,n1:FOR i=1 TO 10:INPUT#1,ot(i),xt(i),gt(i),et(i):NEXT 
  26. 200 INPUT#1,n2:FOR i=1 TO 10:INPUT#1,od(i),xd(i),gd(i),ed(i):NEXT 
  27. 210 INPUT#1,n3:FOR i=1 TO 4:INPUT#1,ok(i),ol(i),om(i),xl(i),el(i),ks(i),kd(i),kw(i),kc(i),kf(i),kl(i):NEXT:CLOSE
  28. 305 IF f(5)=1 THEN f(5)=0:RETURN
  29. 325 IF f(39)<f(1) THEN f(39)=f(1)
  30. 330 CLS:OPEN "r",1,commfile,256:FIELD 1,256 AS cx
  31. 331 IF f(40)<>0 THEN 336
  32. 332 f(40)=1:y=1:f=2:GOSUB 2100:f=3:GOSUB 2100:GOSUB 2060:CLS:PRINT:FOR f=24 TO 31:GOSUB 2100
  33. 333 IF f=26 OR f=29 OR f=31 THEN GOSUB 2060:PRINT
  34. 334 NEXT f:CLS 
  35. 336 IF f(1)=3 AND f(40)=2 THEN f(40)=3:f=32:y=2:GOSUB 2100
  36. 338 IF f(1)=2 AND f(40)=3 THEN f(40)=4:f=5:y=10:GOSUB 2150:om(4)=c
  37. 340 f(3)=f(2)+(f(1)-1)*16:IF f(2)=0 THEN f(3)=1000
  38. 349 'pre-loca
  39. 350 IF d(f(2),0)>19 AND f(8)=0 THEN f=14:y=1:GOSUB 2100:GOTO 600
  40. 355 IF d(f(2),0)<20 AND f(8)=1 THEN f(8)=0
  41. 360 IF NOT((f(3)<33 AND f(3)>20) OR f(1)=5) THEN 370
  42. 362 FOR i=1 TO 12:IF xi(i)<0 THEN xi(i)=-f(3)
  43. 364 NEXT:IF f(1)=5 THEN 370
  44. 366 xd(1)=f(3):IF f(3)>24 THEN xt(1)=f(3)ELSE xt(2)=f(3)
  45. 370 IF f(3)<40 AND f(3)>33 THEN xl(1)=f(3)
  46. 380 IF f(3)>=65 AND f(3)<=71 THEN xt(1)=f(3)
  47. 381 IF f(3)=66 AND f(18)=1 THEN xd(1)=-66:gd(1)=1019
  48. 382 IF f(3)=66 AND f(18)=3 THEN xd(1)=-66:gd(1)=9
  49. 383 IF f(3)=68 AND f(17)=1 THEN xd(2)=-68:gd(2)=1019
  50. 384 IF f(3)=68 AND f(17)=3 THEN xd(2)=-68:gd(2)=9
  51. 385 IF f(3)=73 THEN IF f(18)=3 THEN gd(3)=2ELSE gd(3)=4
  52. 387 IF f(1)=5 AND f(13)=7 THEN f(13)=8:f=78:y=1:GOSUB 2100:PRINT
  53. 400 PRINT p(f(2))
  54. 402 IF f(40)=1 THEN f(40)=2:f=32:y=1:GOSUB 2100
  55. 404 IF d(f(2),0)>8 AND f(1)=4 THEN f=23:y=10:GOSUB 2100:xt(6)=f(3):xt(7)=f(3)
  56. 406 IF f(40)=4 AND f(3)=63 THEN f(40)=5:ol(1)=ot(9):xl(1)=xt(9)
  57. 408 IF f(40)=6 AND f(3)=60 THEN f(40)=7:f=78:y=1:GOSUB 2100:f=74:y=4:GOSUB 2100
  58. 410 '410-500 for the post location
  59. 412 FOR i=1 TO n2:IF xd(i)=-f(3) THEN 415ELSE NEXT i:GOTO 420
  60. 415 FOR i=1 TO n2:IF xd(i)=-f(3) THEN f=23:y=1:GOSUB 2110:PRINT od(i);c(16)
  61. 416 NEXT i
  62. 420 IF d(f(2),0)=1 AND f(32)=0 THEN f=14:y=3:GOSUB 2100
  63. 421 IF d(f(2),0)=2 AND f(32)=0 THEN f=14:y=4:GOSUB 2100:f(9)=1:IF xi(3)<>0 THEN 1280ELSE f=14:y=5:GOSUB 2100:GOTO 1280
  64. 425 IF d(f(2),0)=4 THEN f=23:y=2:GOSUB 2100
  65. 430 IF f(1)=2 AND f(11)>4 AND xl(4)>0 THEN f=79:y=2:GOSUB 2100:xl(4)=f(3):f(11)=f(11)+1
  66. 435 IF d(f(2),0)=5 AND f(32)=0 THEN f=28:y=2:GOSUB 2100:f(9)=3:IF xi(3)<>0 THEN 1280ELSE f=14:y=5:GOSUB 2100:GOTO 1280
  67. 480 IF f(3)<>42 THEN 490
  68. 482 IF d(11,0)=6 THEN IF xl(3)<=0 THEN f=28:y=3:GOSUB 2100
  69. 484 IF f(19)>1 THEN f=31:y=2:GOSUB 2100
  70. 490 IF f(3)=41 THEN 600
  71. 500 FOR i=1 TO 6:IF d(f(2),i)>0 THEN 510ELSE NEXT i:GOTO 530
  72. 510 f=0:PRINT:PRINT c(1);:FOR i=1 TO 6:IF d(f(2),i)>0 THEN  IF f=0  THEN  f=1:PRINT v(i);ELSE PRINT ", "v(i);
  73. 520 NEXT:PRINT c(16)
  74. 530 FOR i=1 TO n3:IF ABS(xl(i))=f(3) THEN 550 ELSE NEXT i
  75. 540 FOR i=1 TO n:IF ABS(xi(i))=f(3) THEN 550 ELSE NEXT i:GOTO 600
  76. 550 PRINT:PRINT c(2);
  77. 560 FOR i=1 TO n3:IF ABS(xl(i))=f(3) THEN PRINT TAB(18)ok(i);ol(i);om(i)
  78. 570 NEXT i:FOR i=1 TO n
  79. 580 IF ABS(xi(i))=f(3) THEN PRINT TAB(18)oh(i);oi(i);oj(i)
  80. 590 NEXT i
  81. 599 '600-999 for pre-comm and  condition
  82. 600 IF NOT(f(3)=13 AND xl(2)>0) THEN 610
  83. 601 f(19)=f(19)+1:IF f(19)<5 THEN 610
  84. 602 IF f(19)=5 THEN f=22:y=2:PRINT c(59);ol(2);:GOSUB 2100:GOTO 610
  85. 603 x1=2:GOSUB 2850:IF INT(RND*3+1)=1 THEN GOSUB 2870 ELSE GOSUB 2860
  86. 610 IF f(3)=3 AND xl(1)=3 THEN x1=1:GOSUB 2750:f(9)=1:GOTO 1280
  87. 620 IF f(1)<>2 THEN 650
  88. 622 IF f(3)<>xd(8) THEN f(16)=0:GOTO 626
  89. 624 f(16)=f(16)+1:IF f(16)=4 THEN GOSUB 4226:GOTO 1280ELSE f=80:y=4:GOSUB 2100
  90. 626 IF NOT(f(3)=xl(1) OR f(3)=xl(2)) THEN f(12)=0:GOTO 632
  91. 628 f(12)=f(12)+1:IF f(12)=4 THEN x1=1:GOSUB 2850:f=82:y=1:GOSUB 2100:f(9)=2:GOTO 1280
  92. 632 IF f(11)=1 THEN IF f(3)=17 THEN f(11)=2ELSE f=78:y=3:GOSUB 2100:f(9)=2:GOTO 1280
  93. 634 IF f(11)=3 AND f(3)=17 THEN f(13)=f(13)+1
  94. 636 IF f(13)=7 THEN f(13)=0:f=80:i=1:j=2:GOSUB 2130:f(9)=2:GOTO 1280
  95. 638 IF NOT(f(3)=xl(3) OR f(3)=xl(4)) THEN 650
  96. 640 IF f(11)=0 THEN f(11)=1:f=78:i=1:j=2:GOSUB 2130:GOTO 650
  97. 642 IF f(11)=2 THEN f(11)=3:f=79:y=1:GOSUB 2100:xl(4)=18:GOTO 650
  98. 644 IF f(11)=3 THEN f=78:y=3:GOSUB 2100:f(9)=2:GOTO 1280
  99. 646 IF f(11)=9 THEN f=79:y=3:GOSUB 2100:f(9)=6:GOTO 1280
  100. 650 IF f(1)<>3 THEN 680
  101. 652 IF f(3)<>xl(3) THEN 658
  102. 654 f(17)=f(17)+1:IF f(17)=1 THEN f=35:y=2:GOSUB 2100:GOTO 658
  103. 656 IF f(17)=2 THEN f=35:y=3:GOSUB 2100ELSE f=35:y=4:GOSUB 2100:f(9)=3:GOTO 1280
  104. 658 IF f(3)<>xl(2) THEN 662
  105. 660 f(30)=f(30)+1:IF f(30)>3 THEN x1=2:GOSUB 2850:GOSUB 2860
  106. 662 IF f(3)<>43 THEN 680
  107. 664 IF f(18)=0 OR f(19)=4 THEN 668
  108. 666 f(19)=f(19)+1:f=31:y=3:GOSUB 2100:IF f(19)=3 THEN f=43:y=2:GOSUB 2100:GOTO 680
  109. 668 IF f(19)=4 THEN f=43:y=3:GOSUB 2100:xd(8)=43:f=58:y=4:GOSUB 2100:IF f(32)=0 THEN f=28:y=2:GOSUB 2100:f(9)=3:GOTO 1280
  110. 680 IF f(40)=5 THEN f(40)=6:GOSUB 8000:GOTO 340
  111. 690 IF f(1)=4 THEN GOSUB 8060
  112. 695 IF fx=9 THEN fx=2:GOTO 1280
  113. 700 IF f(11)=11 AND f(1)=4 THEN f(11)=12:GOTO 340
  114. 710 IF f(1)=4 AND f(9)=4 THEN 1280
  115. 900 IF f(3)=70 THEN f(19)=f(19)+1:IF f(19)>3 THEN f(19)=0:PRINT:f=67:y=2:GOSUB 2100:f(2)=5:PRINT:GOTO 340
  116. 940 IF f(6)<0 THEN f(6)=0
  117. 950 IF f(31)<>1 THEN 990
  118. 952 IF f(7)<4 THEN 960
  119. 954 IF f(34)=0 THEN f(34)=1:oh(1)=c(57)
  120. 956 f=19:y=1:GOSUB 2100:GOTO 990
  121. 960 IF f(34)=1 THEN f(34)=0:oh(1)=c(56)
  122. 970 '
  123. 990 IF f(38)>10 THEN f(7)=f(7)+1:f(38)=0
  124. 992 IF f(7)>4 THEN IF NOT(f(3)>20 AND f(3)<25) THEN f(9)=f(1):GOTO 1280ELSE f(9)=6:GOTO 1280
  125. 995 IF f(7)=4 THEN f(38)=f(38)+1:IF f(38)>8 THEN f=6:y=8:GOSUB 2100
  126. 1000 x1=FRE(0):PRINT:PRINT c(3);:INPUT cm
  127. 1010 x1=LEN(cm):IF x1=0 THEN 1000
  128. 1012 FOR i=1 TO x1:a$(1)=MID$(cm,i,1):IF a$(1)>="A" AND a$(1)<="Z" THEN MID$(cm,i,1)=CHR$(ASC(a$(1))+32)
  129. 1030 NEXT i:x=1:a$(x)="":FOR i=1 TO x1:c=MID$(cm,i,1)
  130. 1040 IF c=" " THEN 1060
  131. 1050 a$(x)=a$(x)+c:GOTO 1070
  132. 1060 x=x+1:a$(x)=""
  133. 1070 NEXT i
  134. 1075 IF x>9 THEN f=6:y=3:GOSUB 2100:GOTO 1000
  135. 1080 'check for blank and the
  136. 1090 FOR i=1 TO x:IF a$(i)=MID$(c(20),1,3) THEN a$(i)=""
  137. 1100 NEXT i:GOSUB 2020:FOR i=1 TO x
  138. 1120 x1=LEN(a$(i)):IF x1<3 THEN a$(i)=a$(i)+" ":GOTO 1120
  139. 1130 NEXT i:FOR i=1 TO 75
  140. 1160 IF MID$(a$(1),1,3)=MID$(v(i),1,3) THEN x1=i:GOTO 1180
  141. 1170 NEXT:PRINT c(6);cm;c(16):FOR i=1 TO x:a$(i)="":NEXT:GOTO 1000
  142. 1180 IF x=1 AND x1>41 THEN PRINT c(4):GOTO 1000
  143. 1190 IF f(4)=0 AND x1=33 THEN 1000
  144. 1192 IF x1=33 THEN x1=xb:x=bx:FOR i=1 TO x+1:a$(i)=ab$(i):NEXT ELSE xb=x1:bx=x:FOR i=1 TO x+1:ab$(i)=a$(i):NEXT 
  145. 1195 fx=4:IF d(f(2),0)>19 AND f(8)=0 THEN IF x1>42 THEN f=14:y=2:GOSUB 2100:GOTO 1280
  146. 1200 c=MID$(a$(2),1,3):ON INT((x1-1)/15)+1 GOTO  1220,1230,1240,1250,1260
  147. 1220 ON x1 GOSUB 3100,3100,3100,3100,3100,3100,3200,3200,3200,3200,3200,3200,3000,3300,3300:GOTO 1280
  148. 1230 ON x1-15 GOSUB 3600,3600,3700,3800,3900,4000,4000,3720,3720,5000,5100,5200,5300,5500,3750:GOTO 1280
  149. 1240 ON x1-30 GOSUB 5080,3600,2000,2000,9700,5600,5700,5400,5900,6000,9900,4100,9100,9100,9000:GOTO 1280
  150. 1250 ON x1-45 GOSUB 4300,4400,4700,4700,2000,4700,4700,4700,2000,7020,7200,6400,12000,12000,2000:GOTO 1280
  151. 1260 ON x1-60 GOSUB 2000,2000,2000,2000,2000,2000,8700,4100,2000,2000,10400,10800,11200,11600,2000:GOTO 1280
  152. 1270 'post comm and  check
  153. 1280 cm="":FOR i=1 TO bx:a$(i)="":NEXT 
  154. 1500 IF f(1)=4 THEN IF f(13)=6 THEN IF xi(4)=0 AND xl(3)>0 THEN f(13)=7:f(5)=6:xi(2)=64:f(35)=4:xi(12)=64ELSE f(13)=3:f=78:y=1:GOSUB 2100
  155. 1830 'death check
  156. 1840 IF f(9)>0 THEN GOSUB 16500
  157. 1850 'move to  next  set
  158. 1860 IF f(5)>0 THEN GOSUB 16000
  159. 1970 ON fx GOTO 1000,1980,340,600,1985,1990
  160. 1980 CLS:GOTO 340
  161. 1985 CLOSE:GOTO 180
  162. 1990 CLOSE:END
  163. 1999 '2000-2999 for subroutine, 3000- for comm and  routine
  164. 2000 f(4)=f(4)+1:f=5:y=6:GOSUB 2100:RETURN
  165. 2010 'removing blanks in comm and  line
  166. 2020 FOR i=1 TO x:IF a$(i)<>"" THEN 2040
  167. 2030 FOR j=i TO  x:a$(j)=a$(j+1):NEXT j:x=x-1:GOTO 2020
  168. 2040 NEXT i:RETURN
  169. 2050 'wait
  170. 2060 PRINT:PRINT c(12)
  171. 2070 'inkey routine return character in c
  172. 2080 c=INKEY$:IF c="" THEN 2080 ELSE RETURN
  173. 2090 'f=comm,y=pos
  174. 2099 'debug
  175. 2100 GOSUB 2150:PRINT c:RETURN
  176. 2110 GOSUB 2150:PRINT c;:RETURN
  177. 2120 FOR f=i TO  i+j-1:GOSUB 2150:PRINT c:NEXT:RETURN
  178. 2130 FOR y=i TO  i+j-1:GOSUB 2150:PRINT c:NEXT:RETURN
  179. 2140 '
  180. 2150 GET 1,f:y1=INSTR(cx,STR$(y)):IF y>9 THEN y1=y1+3 ELSE y1=y1+2
  181. 2160 y2=INSTR(cx,STR$(y+1)):c=MID$(cx,y1,y2-y1):RETURN
  182. 2190 'check items
  183. 2200 x1=0:x2=0:FOR i=1 TO 30
  184. 2210 IF c<>MID$(oi(i),1,3) THEN 2280
  185. 2220 x2=i:IF f(3)=xi(i) THEN x1=i:RETURN
  186. 2230 IF xi(i)=0 THEN x1=i:x2=-x2:RETURN
  187. 2240 IF f(3)=ABS(xi(i)) THEN x1=i:RETURN
  188. 2280 NEXT i:RETURN
  189. 2290 'check aux items
  190. 2300 x1=0:x2=0:FOR i=1 TO n1
  191. 2310 IF c<>MID$(ot(i),1,3) THEN 2350
  192. 2320 x2=i:IF f(3)=xt(i) THEN x1=i:RETURN
  193. 2330 IF f(3)=ABS(xt(i)) THEN x1=i:x2=-x2:RETURN
  194. 2350 NEXT i:RETURN
  195. 2390 'check direction to  go
  196. 2400 x1=0:x2=0:FOR i=1 TO n2
  197. 2410 IF c<>MID$(od(i),1,3) THEN 2450
  198. 2420 x2=i:IF f(3)=ABS(xd(i)) THEN x1=i:RETURN
  199. 2450 NEXT i:RETURN
  200. 2490 'check creature
  201. 2500 x1=0:x2=0:FOR i=1 TO n3
  202. 2510 IF c<>MID$(ol(i),1,3) THEN 2550
  203. 2520 x2=i:IF f(3)=xl(i) THEN x1=i:RETURN
  204. 2530 IF f(3)=ABS(xl(i)) THEN x1=i:x2=-x2:RETURN
  205. 2550 NEXT i:RETURN
  206. 2590 'fourth word input
  207. 2600 PRINT" ";:LINE INPUT a$(4):cm=cm+CHR$(32)+a$(4):RETURN
  208. 2640 'fake what should i do
  209. 2650 PRINT :PRINT c(3)"? ";
  210. 2655 GOSUB 2080:PRINT c;:IF c=CHR$(13) THEN PRINT:RETURN ELSE 2655
  211. 2699 'm-s
  212. 2700 IF d(f(2),0)=f THEN x1=ABS(x2):x2=x1:RETURN
  213. 2702 IF d(f(2),0)=f+1 THEN x1=ABS(x2):x2=x1:d(f(2),0)=0
  214. 2705 RETURN
  215. 2749 'disturb & bite
  216. 2750 f=22:y=1:GOSUB 2110:PRINT ol(x1)
  217. 2752 f=22:y=7:PRINT c(59);ol(x1);:GOSUB 2100:RETURN
  218. 2755 'move & discover
  219. 2760 f=9:y=2:GOSUB 2150:PRINT c(37);c;od(x1);c(16):RETURN
  220. 2764 'don't let
  221. 2765 f=20:y=2:GOSUB 2150:PRINT c(59);ol(x1);c:RETURN
  222. 2799 'if go
  223. 2800 f=21:y=5:GOSUB 2100:PRINT c(8):GOSUB 2080
  224. 2810 IF c="y" OR c="Y" THEN f=15:y=1:GOSUB 2100:f=0
  225. 2820 RETURN
  226. 2840 'attacked
  227. 2850 PRINT c(59);ol(x1);:f=22:y=3:GOSUB 2100:RETURN
  228. 2855 'hit
  229. 2860 f=22:y=4:GOSUB 2100:f(7)=f(7)+1:RETURN
  230. 2865 'dogde
  231. 2870 f=22:y=5:GOSUB 2100:RETURN
  232. 2940 'don't know
  233. 2950 PRINT c(7);a$(2);c(16):RETURN
  234. 2960 PRINT c(7);a$(4);c(16):RETURN
  235. 2970 'don't see
  236. 2980 f=7:y=1+INT(RND*2+1):GOSUB 2110:PRINT a$(2);c(13):RETURN
  237. 2990 f=7:y=1+INT(RND*2+1):GOSUB 2110:PRINT a$(4);c(13):RETURN
  238. 3000 RETURN:PRINT "debug : f/i/l/c/e - 1/2/3/4/5":INPUT f
  239. 3020 ON f GOTO 3030,3040,3050,3060,3090:STOP
  240. 3030 INPUT "#";f:PRINT "before"f(f):INPUT "now ";f(f):GOTO 3000
  241. 3040 INPUT "#";f:PRINT oi(f)" before"xi(f):INPUT "now ";xi(f):GOTO 3000
  242. 3050 INPUT"#";f:PRINT ol(f)" before"xl(f):INPUT "now ";xl(f):GOTO 3000
  243. 3060 PRINT "s/r - 1/2":INPUT f
  244. 3070 IF f=1 THEN  INPUT "# ";f:PRINT c(f):GOTO 3000
  245. 3080 INPUT "# ";f,y:GOSUB 2100:GOTO 3000
  246. 3090 PRINT "exit to  : c/cr/r/pc/l/e":INPUT fx:RETURN
  247. 3099 'n,s,e,w,u,d
  248. 3100 f(4)=f(4)+1:IF d(f(2),x1)>0 THEN 3150
  249. 3110 'can't go in dark
  250. 3112 IF d(f(2),0)<19 THEN 3120
  251. 3114 IF f(8)=1 THEN 3120
  252. 3116 IF INT(RND*2+1)=2 THEN 3120
  253. 3118 f=21:y=6:GOSUB 2100:f(9)=f(1):RETURN
  254. 3120 PRINT c(9):RETURN
  255. 3149 'pre-condition for move
  256. 3150 IF d(f(2),x1)=1000 THEN f(2)=0:fx=2:RETURN
  257. 3151 IF d(f(2),x1)=999 THEN f=43:y=4:GOSUB 2100:f(9)=3:RETURN
  258. 3152 IF d(f(2),x1)=998 THEN PRINT :f=23:y=11:GOSUB 2100:f=67:y=2:GOSUB 2100:RETURN
  259. 3155 IF d(f(2),x1)=997 THEN IF f(11)<4 THEN f=73:y=6:GOSUB 2100:RETURN ELSE f(2)=13:fx=2:RETURN
  260. 3180 IF xl(4)=55 THEN x1=4:GOSUB 2765:RETURN
  261. 3190 f(2)=d(f(2),x1):fx=2:RETURN
  262. 3200 x1=x1-6:GOTO 3100
  263. 3210 '
  264. 3290 'save & restore
  265. 3300 fx=1:cm="":PRINT c(54);:LINE INPUT cm
  266. 3310 IF LEN(cm)>8 THEN  f=6:y=1:GOSUB 2100:GOTO 3300
  267. 3320 IF cm="" THEN  cm="sword.save"ELSE cm=cm+".save"
  268. 3330 CLOSE:IF x1=15 THEN  3400
  269. 3340 ON ERROR GOTO 3500
  270. 3350 OPEN "o",1,cm
  271. 3360 FOR i=1 TO 50:PRINT#1,f(i):NEXT
  272. 3361 FOR i=1 TO 30:PRINT#1,CHR$(34)oh(i)CHR$(34)","CHR$(34)oj(i)CHR$(34)","xi(i):NEXT:FOR i=1 TO 10:PRINT#1,xt(i):NEXT:FOR i=1 TO 10:PRINT#1,xd(i):NEXT:FOR i=1 TO 4:PRINT#1,CHR$(34)ok(i)CHR$(34)","CHR$(34)om(i)CHR$(34)","xl(i):NEXT
  273. 3370 FOR i=1 TO 16:PRINT#1,d(i,0):NEXT:CLOSE:PRINT c(10):GOSUB 2060:GOTO 3540
  274. 3390 '
  275. 3400 ON ERROR GOTO 3500
  276. 3410 OPEN"i",1,cm:INPUT#1,f:CLOSE
  277. 3414 IF f>5 THEN PRINT c(51):GOSUB 2060:GOTO 3510
  278. 3420 IF f<>f(1) THEN f(1)=f:f(5)=1:GOSUB 180
  279. 3430 OPEN"i",1,cm
  280. 3440 FOR i=1 TO 50:INPUT#1,f(i):NEXT:FOR i=1 TO 30:INPUT#1,oh(i),oj(i),xi(i):NEXT
  281. 3441 FOR i=1 TO 10:INPUT#1,xt(i):NEXT:FOR i=1 TO 10:INPUT#1,xd(i):NEXT:FOR i=1 TO 4:INPUT#1,ok(i),om(i),xl(i):NEXT
  282. 3450 FOR i=1 TO 16:INPUT#1,d(i,0):NEXT:CLOSE:PRINT c(10):GOSUB 2060:fx=2:GOTO 3540
  283. 3490 '
  284. 3500 RESUME 3510
  285. 3510 PRINT "File is not found."
  286. 3520 CLOSE:GOSUB 3540:f=6:y=2:GOSUB 2110:GOSUB 2060:RETURN
  287. 3530 '
  288. 3540 ON ERROR GOTO 3560
  289. 3550 OPEN "r",1,commfile,256:FIELD 1,256 AS cx:RETURN
  290. 3560 IF ERR<>53 THEN PRINT ERL,ERR:END
  291. 3565 RESUME 3570
  292. 3570 PRINT c(53):GOSUB 2060:GOTO 3550
  293. 3590 'stop & quit
  294. 3600 PRINT c(8):GOSUB 2080:IF c="y" OR c="Y" THEN GOSUB 3700:fx=6:RETURN ELSE fx=1:RETURN
  295. 3690 'score
  296. 3700 IF f(5)=8 THEN RETURN  'last set show score later
  297. 3701 fx=1:f(4)=f(4)+1:f=6:y=4:GOSUB 2110:PRINT f(6);:f=6:y=5:GOSUB 2110:PRINT INT(f(39)*f(6)*1.25)/100;c(14):RETURN
  298. 3710 'look
  299. 3720 fx=2:RETURN
  300. 3740 'command 
  301. 3750 fx=1:f(4)=f(4)+1:f=7:y=1:GOSUB 2100:RETURN
  302. 3790 'help
  303. 3800 fx=1:f(4)=f(4)+1:f=6:y=6:GOSUB 2100
  304. 3805 IF f(3)=43 THEN f=59:y=3:GOSUB 2100:RETURN
  305. 3810 IF f(3)<33 AND f(3)>24 THEN f=59:y=3:GOSUB 2100
  306. 3815 RETURN
  307. 3890 'diagnose
  308. 3900 IF f(2)=0 THEN f=7:y=4:GOSUB 2100:RETURN
  309. 3910 fx=1:f(4)=f(4)+1:f=77:y=1+f(7):GOSUB 2100:RETURN
  310. 3990 'inventory
  311. 4000 fx=1:f(4)=f(4)+1:FOR i=1 TO 30:IF xi(i)=0 THEN 4020
  312. 4010 NEXT:f=6:y=9:GOSUB 2100:RETURN
  313. 4020 PRINT c(15);:FOR i=1 TO 30:IF xi(i)=0 THEN PRINT TAB(15)oh(i);oi(i);oj(i)
  314. 4030 NEXT:RETURN
  315. 4040 '
  316. 4090 'go & enter
  317. 4100 c=MID$(a$(2),1,3):IF c=c(22) OR c=c(23) OR c=MID$(c(24),1,3) THEN GOSUB 9560:GOTO 4100
  318. 4105 IF c="" THEN f=16:y=1:GOSUB 2100:RETURN
  319. 4110 GOSUB 2400:IF x1=0 THEN 4150
  320. 4120 f(4)=f(4)+1:IF gd(x1)>1000 THEN 4200
  321. 4121 'pre-condition before go
  322. 4122 IF xl(1)=4 AND x1=1 THEN x1=1:GOSUB 2750:f(9)=1:RETURN
  323. 4123 IF xi(5)=0 AND f(3)=1 THEN f=8:y=5:GOSUB 2100:RETURN
  324. 4125 IF xl(2)=47 AND x1=1 THEN x1=2:GOSUB 2765:RETURN
  325. 4126 IF xl(3)=42 AND x1=10 THEN x1=2:GOSUB 2765:RETURN
  326. 4130 f(2)=gd(x1):fx=2:RETURN
  327. 4140 '
  328. 4150 IF x2>0 THEN f=11:y=2:GOSUB 2100:RETURN
  329. 4152 FOR i=1 TO 12:IF c=MID$(v(i),1,3) THEN x1=i:IF x1>6 THEN 3200ELSE 3100
  330. 4160 NEXT i:GOSUB 2300:IF x2=0 THEN GOSUB 2200:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  331. 4164 IF x1=0 THEN GOSUB 2980:RETURN ELSE PRINT c(11):RETURN
  332. 4190 'comment routine when can't go that way
  333. 4200 ON gd(x1)-1000 GOTO 4210,4212,4214,4216,4218,4220,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244,4246
  334. 4210 f=8:y=5:GOSUB 2100:RETURN
  335. 4212 f=8:y=6:GOSUB 2100:RETURN
  336. 4214 GOTO 5100
  337. 4216 f=77:y=7:GOSUB 2100:RETURN
  338. 4218 f=11:y=2:GOSUB 2100:RETURN
  339. 4220 f=80:y=3:GOSUB 2100:RETURN
  340. 4222 f(5)=5:RETURN
  341. 4224 IF xi(10)=0 THEN f(5)=3:RETURN ELSE f=8:y=6:GOSUB 2100:RETURN
  342. 4226 f=80:y=2:GOSUB 2100:f=82:i=1:j=3:GOSUB 2130:f(2)=3:fx=2:xi(2)=999:xi(6)=999:xi(7)=999:IF xi(3)=0 THEN xi(3)=999ELSE xi(3)=998
  343. 4227 oj(2)="":oj(3)="":oj(6)="":oj(7)="":oj(8)="":f(32)=0:xi(8)=29:GOSUB 2060:RETURN
  344. 4228 f=44:y=2:GOSUB 2100:f(9)=4:RETURN
  345. 4230 IF f(14)>1 THEN 4234
  346. 4232 f=44:y=3:GOSUB 2100:RETURN
  347. 4234 PRINT c(9):RETURN
  348. 4236 f=62:y=2:GOSUB 2100:RETURN
  349. 4238 f=64:y=2:GOSUB 2100:RETURN
  350. 4240 f(5)=7:RETURN
  351. 4242 IF f(16)=0 THEN IF xi(2)=0 OR xi(2)=72 THEN f(16)=1ELSE 4212
  352. 4243 f(2)=7:fx=2:RETURN
  353. 4244 f(5)=8:RETURN
  354. 4246 f=65:y=2:GOSUB 2100:RETURN
  355. 4290 'get
  356. 4300 IF c=c(22) OR c=c(23) THEN 4100
  357. 4310 IF c<>c(25) THEN 4400
  358. 4320 f(4)=f(4)+1:IF f(3)=3 THEN f(2)=4:fx=2:RETURN
  359. 4330 IF f(3)=48 THEN f(2)=15:fx=2:RETURN
  360. 4340 IF f(3)=64 THEN f(2)=15:fx=2:RETURN
  361. 4370 'pre-condition for get out
  362. 4380 PRINT c(9):RETURN
  363. 4390 'take & get
  364. 4400 GOSUB 2300:IF x2=0 THEN 4500
  365. 4410 IF x1=0 THEN GOSUB 2980:RETURN
  366. 4420 f(4)=f(4)+1:IF x2>0 THEN f=7:y=5:GOSUB 2100:RETURN
  367. 4430 'special items condition
  368. 4490 f=6:y=7:GOSUB 2100:RETURN
  369. 4500 GOSUB 2200:IF x2=0 THEN 4600
  370. 4505 IF ABS(x2)=9 THEN f=3:GOSUB 2700
  371. 4507 IF f(1)=4 AND x2=2 AND f(3)=xl(2) THEN f=72:y=2:GOSUB 2100:RETURN
  372. 4510 IF x1=0 THEN GOSUB 2980:RETURN
  373. 4520 IF x2<0 THEN f=7:y=6:GOSUB 2100:RETURN
  374. 4530 'pre-condition to  take
  375. 4531 IF NOT(x1=4 AND f(1)=1) THEN 4540
  376. 4533 IF xl(2)>0 THEN x1=2:GOSUB 2765:RETURN
  377. 4535 IF f(36)=0 THEN f=20:y=4:GOSUB 2100:f(36)=1
  378. 4540 IF f(1)=3 AND x1=2 AND f(18)=0 THEN f(18)=1:d(11,0)=0:IF f(35)=1 THEN f(35)=2:f(6)=f(6)+5
  379. 4580 oj(x1)=""
  380. 4590 xi(x1)=0:f(4)=f(4)+1:PRINT a$(2);c(18):RETURN
  381. 4600 GOSUB 2500:IF x2=0 THEN 4650
  382. 4610 IF x1=0 THEN GOSUB 2980:RETURN
  383. 4620 f(4)=f(4)+1:IF x2<0 THEN f=8:y=1:GOSUB 2100:RETURN
  384. 4621 'take creature alive
  385. 4622 IF x1=1 AND f(1)=1 THEN GOSUB 2750:f(9)=1:RETURN
  386. 4630 f=8:y=2:GOSUB 2100:RETURN
  387. 4640 '
  388. 4650 GOSUB 2400:IF x2=0 THEN GOSUB 2950:RETURN ELSE f=8:y=3:GOSUB 2100:RETURN
  389. 4690 'drop & put
  390. 4700 x3=x1:GOSUB 2200:IF x2<>0 THEN 4750
  391. 4710 GOSUB 2300:IF x2=0 THEN GOSUB 2400:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  392. 4720 f=8:y=3:GOSUB 2100:RETURN
  393. 4750 IF x2>0 THEN f=10:y=1+INT(RND*2+1):GOSUB 2100:RETURN
  394. 4755 ON x3-47 GOTO 4800,4800,2000,7400,7500,7550,2000:STOP
  395. 4760 'pre-condition for drop
  396. 4800 x3=x1:x4=x2:c=MID$(a$(3),1,3):IF NOT(c=c(21) OR c=c(22)) THEN 4900
  397. 4810 c=MID$(a$(4),1,3):IF c="" THEN 4900
  398. 4815 GOSUB 2300:IF x2<>0 THEN 4850
  399. 4817 GOSUB 2400:IF x2<>0 THEN IF f(1)<>2 THEN f=10:y=5:GOSUB 2100:RETURN ELSE IF x1=0 THEN GOSUB 2990:RETURN ELSE IF x1=1 THEN GOSUB 4990:IF x3=8 THEN xi(8)=f(3):RETURN ELSE xi(x3)=999:RETURN
  400. 4820 GOSUB 2200:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2960:RETURN
  401. 4830 IF x1=0 THEN GOSUB 2990:RETURN ELSE PRINT c(11):RETURN
  402. 4850 IF x1=0 THEN GOSUB 2990:RETURN
  403. 4860 IF gt(x1)>1000 THEN 4950
  404. 4870 IF gt(x1)=0 THEN f=10:y=4+INT(RND*3+1):GOSUB 2100:RETURN
  405. 4880 'pre-condition to  put on
  406. 4890 oj(x3)=CHR$(32)+c(22)+c(20)+ot(gt(x1)):PRINT c(10)
  407. 4895 IF f(1)=2 AND (x1=1 OR x1=2) THEN GOSUB 4990:xi(x3)=-f(3):RETURN
  408. 4900 GOSUB 4990
  409. 4910 f(4)=f(4)+1:IF NOT(x3=9 AND f(3)<21) THEN 4920
  410. 4912 IF d(f(2),0)=0 THEN d(f(2),0)=4
  411. 4914 xi(9)=999:RETURN
  412. 4920 IF (f(3)<33 AND f(3)>20) OR f(1)=5 THEN xi(x3)=-f(3):RETURN
  413. 4940 xi(x3)=f(3):RETURN
  414. 4950 f(4)=f(4)+1:ON gt(x1)-1000 GOTO 4960,4980
  415. 4960 IF x3<>9 THEN f=8:y=3:GOSUB 2100:RETURN
  416. 4965 IF xl(3)<=0 OR f(41)=0 THEN PRINT c(10):GOTO 4914
  417. 4970 f=81:y=1:GOSUB 2100:xt(4)=0:GOSUB 2650:f=81:y=2:GOSUB 2100:f=5:y=1:GOSUB 2150:ok(3)=c:xi(9)=999:xl(3)=-f(3):xl(4)=23:f(11)=4:f(41)=0:IF f(30)=1 THEN f(30)=0:f(6)=f(6)+10:RETURN ELSE f(6)=f(6)+15:RETURN
  418. 4980 IF x3<>2 THEN f=8:y=3:GOSUB 2100:RETURN
  419. 4982 PRINT c(10):f=23:y=9:GOSUB 2150:oj(2)=c:xi(2)=43:f(18)=0:d(11,0)=6:RETURN
  420. 4989 'drop check
  421. 4990 PRINT a$(2);c(19):f(4)=f(4)+1:IF x3=1 THEN f(31)=0
  422. 4992 IF x3=3 THEN f(32)=0
  423. 4994 RETURN
  424. 4999 'jump
  425. 5000 f(4)=f(4)+1:IF f(3)=44 THEN f(2)=11:fx=2:RETURN
  426. 5015 IF NOT(f(3)=42 OR f(3)=43) THEN 5060
  427. 5020 IF f(3)<>42 THEN 5040
  428. 5025 IF f(19)=0 OR f(19)=1 THEN IF xl(3)=42 THEN x1=2:GOSUB 2765:RETURN ELSE f(2)=11:fx=2:RETURN
  429. 5030 f=10:y=5:GOSUB 2100:RETURN
  430. 5040 IF f(19)=0 OR f(19)=1 THEN f(2)=10:fx=2:RETURN
  431. 5045 IF f(19)=4 THEN f(2)=12:fx=2:RETURN ELSE f=44:y=4:GOSUB 2100:f(9)=3:RETURN
  432. 5060 f=11:y=1:GOSUB 2100:RETURN
  433. 5070 'suicide
  434. 5080 fx=1:f(4)=f(4)+1:f=11:y=6:GOSUB 2100:RETURN
  435. 5090 'sail
  436. 5100 IF f(3)=3 THEN GOSUB 2800:IF f>0 THEN RETURN ELSE f(5)=2:RETURN
  437. 5110 IF f(3)=48 THEN PRINT c(8):GOSUB 2080:IF c="y" OR c="Y" THEN f(5)=4:RETURN ELSE RETURN
  438. 5120 IF f(3)=64 THEN f(5)=6:RETURN
  439. 5180 f=11:y=2:GOSUB 2100:RETURN
  440. 5190 'landing
  441. 5200 f(4)=f(4)+1:IF f(3)=3 THEN f(2)=4:fx=2:RETURN
  442. 5210 IF f(3)=48 THEN f(2)=15:fx=2:RETURN
  443. 5220 IF f(3)=64 THEN f(2)=15:fx=2:RETURN
  444. 5280 f=11:y=2:GOSUB 2100:RETURN
  445. 5290 'wait
  446. 5300 f(4)=f(4)+1
  447. 5380 f=11:y=3:GOSUB 2100:RETURN
  448. 5390 'f???
  449. 5400 IF c="" THEN 5500
  450. 5410 GOSUB 2500:IF x2<=0 AND x1=0 THEN 5500
  451. 5420 'selected event only
  452. 5490 's???
  453. 5500 f(4)=f(4)+1:f=11:y=3+INT(RND*2+1):GOSUB 2100:RETURN
  454. 5590 'spell
  455. 5600 f(4)=f(4)+1:FOR i=21 TO 26:IF f(i)>0 THEN 5620ELSE NEXT i
  456. 5610 f=11:y=7:GOSUB 2100:RETURN
  457. 5620 f=12:y=1:PRINT:GOSUB 2100:FOR i=21 TO 26
  458. 5625 IF f(i)=0 THEN 5640
  459. 5630 PRINT TAB(3)c(i+10)" ";:IF i=21 AND f(20)=0 THEN PRINT c(30);
  460. 5632 IF i=22 AND f(8)=1 THEN f=21:y=2:GOSUB 2110
  461. 5635 PRINT
  462. 5640 NEXT i:RETURN
  463. 5690 'move
  464. 5700 IF c="" THEN f=15:y=2:GOSUB 2150:PRINT c(37);f(4);c:fx=1:RETURN
  465. 5710 GOSUB 2300:IF x2<>0 THEN 5800
  466. 5720 GOSUB 2400:IF x2<>0 THEN PRINT c(11):RETURN
  467. 5730 GOSUB 2200:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  468. 5740 IF x1=0 THEN GOSUB 2980:RETURN ELSE f=12:y=4:GOSUB 2100:RETURN
  469. 5800 IF x1=0 THEN GOSUB 2980:RETURN
  470. 5810 f(4)=f(4)+1:IF x2<0 THEN f=12:y=4:GOSUB 2100:RETURN
  471. 5820 IF f(1)<>1 THEN 5890
  472. 5830 IF NOT(x1=3 OR x1=5) THEN 5860
  473. 5840 IF f(11)=1 THEN f(11)=0:xd(3)=0:PRINT c(10):RETURN
  474. 5850 f(11)=1:xd(3)=-5:x1=3:GOSUB 2760:RETURN
  475. 5860 IF x1<>10 THEN f=12:y=6:GOSUB 2100:RETURN
  476. 5870 IF f(12)=1 THEN f(12)=0:xd(5)=0:PRINT c(10):RETURN
  477. 5880 f(12)=1:xd(5)=-2:x1=5:GOSUB 2760:RETURN
  478. 5890 IF f(3)=45 THEN IF x1=9 THEN IF xi(7)=999 THEN xi(7)=45:f=9:y=4:GOSUB 2100:RETURN ELSE f=13:y=1:GOSUB 2100:RETURN
  479. 5898 f=12:y=4:GOSUB 2100:RETURN
  480. 5899 'write
  481. 5900 f=12:y=3:GOSUB 2100:RETURN
  482. 5990 'wake
  483. 6000 c=MID$(a$(2),1,3):IF c=v(5) THEN a$(2)=a$(3):GOTO 6000
  484. 6010 IF c<>"" THEN 6050
  485. 6020 f(4)=f(4)+1:IF f(3)>=48 AND f(3)<=59 THEN f=12:y=6:GOSUB 2100:RETURN
  486. 6030 'condition to  wake up
  487. 6040 f=12:y=5:GOSUB 2100:RETURN
  488. 6050 GOSUB 2500:IF x2<>0 THEN 6090
  489. 6060 GOSUB 2200:IF x2=0 THEN GOSUB 2300:IF x2=0 THEN GOSUB 2400:IF x2=0 THEN GOSUB 2980:RETURN
  490. 6070 PRINT c(11):RETURN
  491. 6090 IF x1=0 THEN GOSUB 2980:RETURN
  492. 6100 f(4)=f(4)+1:IF x2<0 THEN f=10:y=4+INT(RND*3+1):GOSUB 2100:RETURN
  493. 6110 'selected creature and location, example dreamland  
  494. 6120 IF f(3)>=48 AND f(3)<=59 THEN f=12:y=6:GOSUB 2100:RETURN
  495. 6180 f=8:y=2:GOSUB 2100:RETURN
  496. 6400 GOSUB 2200:IF x2<>0 THEN 6500
  497. 6410 GOSUB 2300:IF x2<>0 THEN 6440
  498. 6420 GOSUB 2400:IF x2<>0 THEN PRINT c(5);cm" ?":RETURN
  499. 6430 GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN ELSE PRINT c(11):RETURN
  500. 6440 IF x1=0 THEN GOSUB 2980:RETURN
  501. 6450 f(4)=f(4)+1 'check for special readable item
  502. 6455 IF f(1)<>3 THEN 6490
  503. 6460 IF x1=1 OR x1=8 THEN y=2:f=50:GOSUB 2100:f=61:GOSUB 2100:RETURN
  504. 6490 f=13:y=5:GOSUB 2100:RETURN
  505. 6500 IF x1=0 THEN GOSUB 2980:RETURN
  506. 6510 f(4)=f(4)+1:IF x1=5 THEN 6610
  507. 6520 IF x1=6 THEN 6710
  508. 6530 IF x1=7 THEN 6760
  509. 6540 IF x1=12 THEN 6860
  510. 6550 IF NOT(x1=2 OR x1=15 OR x1=8 OR x1=1) THEN PRINT c(5);cm" ?":RETURN
  511. 6552 IF x1=1 THEN f=18:y=6:GOSUB 2100:RETURN
  512. 6554 IF x1=2 THEN IF f(35)=0 THEN f=19:y=2:GOSUB 2150:PRINT c;cn;:y=3:GOSUB 2100:RETURN ELSE IF f(18)=0 THEN f=10:y=5:GOSUB 2100:RETURN ELSE y=3:f=58:GOSUB 2110:f=19:GOSUB 2100:RETURN
  513. 6580 f=13:y=5:GOSUB 2100:RETURN
  514. 6590 IF x2>0 THEN xi(x1)=0:PRINT a$(2);c(18):oj(x1)=""
  515. 6595 RETURN
  516. 6609 'bio 
  517. 6610 GOSUB 6590:IF f(27)=16 THEN f=21:y=1:GOSUB 2100:RETURN
  518. 6612 f(27)=f(27)+1:y=1:ON f(27) GOTO 6620,6622,6624,6626,6628,6630,6632,6634,6636,6638,6640,6642,6644,6646,6648,6650
  519. 6620 i=40:j=2:GOSUB 2120:RETURN
  520. 6622 i=42:j=3:GOSUB 2120:RETURN
  521. 6624 i=45:j=3:GOSUB 2120:RETURN
  522. 6626 i=48:j=3:GOSUB 2120:RETURN
  523. 6628 i=51:j=3:GOSUB 2120:RETURN
  524. 6630 i=54:j=2:GOSUB 2120:RETURN
  525. 6632 i=56:j=3:GOSUB 2120:RETURN
  526. 6634 i=59:j=3:GOSUB 2120:RETURN
  527. 6636 f=62:GOSUB 2100:RETURN
  528. 6638 i=63:j=2:GOSUB 2120:RETURN
  529. 6640 i=65:j=3:GOSUB 2120:RETURN
  530. 6642 i=68:j=2:GOSUB 2120:RETURN
  531. 6644 i=70:j=2:GOSUB 2120:RETURN
  532. 6646 i=72:j=2:GOSUB 2120:RETURN
  533. 6648 f=74:GOSUB 2100:RETURN
  534. 6650 i=75:j=2:f(6)=f(6)+5:GOSUB 2120:RETURN
  535. 6700 RETURN
  536. 6709 'book
  537. 6710 GOSUB 6590:IF f(28)=3 THEN f=39:y=1:GOSUB 2100:RETURN
  538. 6715 f(28)=f(28)+1:y=1:ON f(28) GOTO 6720,6722,6724
  539. 6720 i=34:j=2:GOSUB 2120:RETURN
  540. 6722 i=36:j=2:GOSUB 2120:RETURN
  541. 6724 f=38:GOSUB 2100:RETURN
  542. 6750 RETURN
  543. 6759 'scroll
  544. 6760 GOSUB 6590:IF f(29)=0 THEN f=33:y=2:GOSUB 2100:IF f(22)=1 THEN RETURN ELSE f(22)=1:y=1:GOSUB 2100:RETURN
  545. 6762 IF f(29)=1 THEN f(29)=2:f(24)=1:f(6)=f(6)+5:f=33:y=3:GOSUB 2100:y=1:GOSUB 2100:y=5:GOSUB 2100:RETURN
  546. 6764 IF f(29)=2 THEN IF f(1)=3 THEN f=33:y=3:GOSUB 2100:f=5:y=8:GOSUB 2100:RETURN ELSE f=13:y=5:GOSUB 2150:PRINT c(29);c:RETURN
  547. 6850 RETURN
  548. 6859 'leaflet
  549. 6860 GOSUB 6590:f=99:y=2:GOSUB 2100:f=100:y=1:GOSUB 2100:RETURN
  550. 7010 'say
  551. 7020 f(4)=f(4)+1:IF f(1)=4 AND f(11)=6 THEN IF c=ot(10) THEN f(11)=7:RETURN ELSE IF c=od(10) THEN f(11)=8:RETURN
  552. 7030 'selected word
  553. 7170 x1=LEN(a$(1))+1:PRINT MID$(cm,x1+1,LEN(cm)-x1)"...":RETURN
  554. 7190 'climb
  555. 7200 GOSUB 2400:IF x2<>0 THEN 7240
  556. 7210 GOSUB 2300:IF x2<>0 THEN 7300
  557. 7220 GOSUB 2200:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  558. 7230 PRINT c(11):RETURN
  559. 7240 IF x1=0 THEN f=11:y=2:GOSUB 2100:RETURN
  560. 7250 f(4)=f(4)+1:IF f(1)=1 AND x1=10 THEN f(2)=gd(x1):fx=2:RETURN
  561. 7260 'selected climb direction
  562. 7290 f=10:y=4+INT(RND*3+1):GOSUB 2100:RETURN
  563. 7300 IF x1=0 THEN GOSUB 2980:RETURN
  564. 7310 f(4)=f(4)+1
  565. 7320 'selected climb item
  566. 7380 f=13:y=6:GOSUB 2100:RETURN
  567. 7390 'eat 4,9,17,27,20,29,30
  568. 7400 f(4)=f(4)+1:IF x1<>4 THEN 7420
  569. 7409 'eat item
  570. 7410 f(37)=f(37)-1:f=21:y=3:GOSUB 2100:IF f(37)=0 THEN f=21:y=4:GOSUB 2100:xi(4)=999
  571. 7415 f(7)=0:f(38)=0:RETURN
  572. 7420 IF x1<>9 THEN 7480
  573. 7422 IF f(41)=1 THEN f=82:y=7:GOSUB 2100:f=83:y=1:GOSUB 2100:f(9)=2ELSE f=82:y=6:GOSUB 2100
  574. 7425 xi(9)=999:RETURN
  575. 7480 PRINT c(5);cm;" ?":RETURN
  576. 7490 'drink 23,20
  577. 7500 f(4)=f(4)+1:IF x1<>23 THEN 7530
  578. 7510 'drink blood
  579. 7530 PRINT c(5);cm" ?":RETURN
  580. 7540 'blow
  581. 7550 IF x1<>18 THEN PRINT c(5);cm" ?":RETURN
  582. 7560 f(4)=f(4)+1
  583. 7570 'special blowing condition
  584. 7580 f=13:y=1:GOSUB 2100:RETURN
  585. 7999 'thief action
  586. 8000 f=74:y=2:GOSUB 2100:GOSUB 2650:f=84:y=1:GOSUB 2100:GOSUB 2650:f=84:y=2:GOSUB 2100:f=83:y=5:GOSUB 2100
  587. 8010 f=73:IF xi(1)=0 AND f(31)=1 THEN y=2:GOSUB 2100ELSE xi(1)=999:f(31)=0
  588. 8020 IF xi(4)<>999 THEN f(37)=1:IF xi(4)=0 THEN y=3:GOSUB 2100
  589. 8030 IF xi(7)=0 THEN y=4:GOSUB 2100
  590. 8040 GOSUB 2650:f=85:y=1:GOSUB 2100:GOSUB 2650:f=86:GOSUB 2100:FOR i=1 TO 11:oj(i)="":NEXT:f(35)=3:f(32)=0:xi(2)=999:xi(3)=999:xi(9)=999:xi(10)=999:xi(11)=999:ol(1)=ot(8):xl(1)=xt(8):f(2)=12:GOSUB 2060:RETURN
  591. 8049 'set 4 encounter
  592. 8060 IF xl(2)<=0 AND f(3)=60 THEN f(9)=4:f=94:IF f(11)>3 THEN y=2:GOSUB 2100:RETURN ELSE y=1:GOSUB 2100:y=2:GOSUB 2100:RETURN
  593. 8062 IF (f(3)>=48 AND f(3)<=60) AND xl(3)<=0 THEN IF f(3)=60 THEN f=94:y=3:GOSUB 2100:f(9)=4:RETURN ELSE IF f(13)<>3 THEN GOSUB 8500:f=96:y=3:GOSUB 2100:RETURN
  594. 8064 IF xl(2)=f(3) THEN GOSUB 8100ELSE GOSUB 8200
  595. 8065 IF xl(1)=f(3) THEN GOSUB 8300ELSE GOSUB 8400
  596. 8070 IF d(f(2),0)>9 AND INT(RND*15+1)<f(12) THEN IF INT(RND*2+1)=1 THEN f=67:y=4:GOSUB 2150:PRINT c;od(d(f(2),0)-4)ELSE f=93:y=3:GOSUB 2150:PRINT c;od(d(f(2),0)-4)
  597. 8075 IF d(f(2),0)>=9 AND xl(3)>0 THEN f(12)=f(12)+1
  598. 8080 IF (f(12)>30 AND f(13)=0) OR (f(12)>20 AND f(13)>0) THEN GOSUB 8500
  599. 8090 RETURN
  600. 8099 'meet siva
  601. 8100 IF f(11)=2 THEN f(11)=3:PRINT:i=88:j=2:y=1:GOSUB 2120:RETURN
  602. 8110 IF f(11)=3 THEN f(11)=4:PRINT:f=90:y=1:GOSUB 2100:xl(3)=60:RETURN
  603. 8120 IF f(11)=4 THEN f(11)=5:PRINT:f=90:y=2:GOSUB 2100:f=91:y=1:GOSUB 2100:GOSUB 2060:PRINT:i=92:j=2:y=1:GOSUB 2120:f=89:y=2:GOSUB 2100:RETURN
  604. 8130 IF f(11)=5 THEN f(11)=6:PRINT:f=73:y=5:GOSUB 2100:RETURN
  605. 8135 IF f(11)=6 AND INT(RND*2+1)=1 THEN PRINT:f=93:y=2:GOSUB 2100:RETURN
  606. 8140 IF f(11)=7 THEN f(11)=11:PRINT:f(6)=f(6)+5:f=75:y=2:GOSUB 2100:f=11:y=3:GOSUB 2100:GOSUB 2060:i=86:j=2:y=2:GOSUB 2120:f(2)=6:xl(3)=55:GOSUB 2060:CLS:f=94:y=4:GOSUB 2100:PRINT:RETURN
  607. 8150 IF f(11)=8 THEN f(11)=9:PRINT:f=71:y=3:GOSUB 2100:RETURN
  608. 8155 IF f(11)=9 AND INT(RND*3+1)=1 THEN PRINT:f=71:y=3:GOSUB 2100:RETURN
  609. 8160 IF f(11)=10 THEN f(11)=6:PRINT:f=74:y=3:GOSUB 2100
  610. 8170 RETURN
  611. 8200 IF f(11)=0 THEN f(11)=1:RETURN
  612. 8210 IF f(11)=1 THEN f(11)=2:xl(2)=60:PRINT:f=87:y=1:GOSUB 2100:RETURN
  613. 8220 IF f(11)=9 THEN f(11)=10:RETURN ELSE RETURN
  614. 8290 'meet xorr
  615. 8300 IF f(13)=0 THEN f(13)=1:f=95:y=1:GOSUB 2100:f=96:GOSUB 2100:f(12)=0:xi(2)=55:xl(1)=49:xl(3)=49:xl(4)=55:fx=9:FOR i=2 TO 5:d(i,0)=d(i+6,0):d(i+6,0)=9:NEXT:GOSUB 2060:RETURN
  616. 8310 IF f(13)=1 THEN f(13)=2:f=96:y=2:GOSUB 2100:RETURN
  617. 8320 IF f(13)=2 THEN f=97:y=1:GOSUB 2100:GOSUB 8500:RETURN
  618. 8330 IF f(13)=4 THEN f(13)=5:f=97:y=2:GOSUB 2100:RETURN
  619. 8340 IF f(13)=5 THEN f=97:y=3:GOSUB 2100:f(9)=4:GOSUB 8500
  620. 8350 RETURN
  621. 8400 IF f(13)=2 OR f(13)=4 OR f(13)=5 THEN f=96:y=3:GOSUB 2100:GOSUB 8500
  622. 8410 RETURN
  623. 8490 'liv dead
  624. 8500 f(12)=0:f(13)=3:xl(1)=0:xl(3)=0:f=90:y=3:GOSUB 2100:RETURN
  625. 8690 'wear
  626. 8700 GOSUB 2200:IF x2<>0 THEN 8730
  627. 8710 GOSUB 2300:IF x2=0 THEN GOSUB 2400:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  628. 8720 PRINT c(11):RETURN
  629. 8730 IF x1=0 THEN GOSUB 2980:RETURN
  630. 8740 f(4)=f(4)+1:IF NOT(x1=1 OR x1=3) THEN PRINT c(11):RETURN
  631. 8800 IF x2>0 THEN xi(x1)=0:oj(x1)="":PRINT a$(2);c(18)
  632. 8810 IF x1<>3 THEN 8850
  633. 8820 IF f(32)=1 THEN f=15:y=3:GOSUB 2100:RETURN
  634. 8830 f(32)=1:PRINT c(10):RETURN
  635. 8850 IF f(31)=1 THEN f=15:y=3:GOSUB 2100:RETURN
  636. 8860 f(31)=1:PRINT c(10):RETURN
  637. 8890 'check attacking with what
  638. 8900 x3=x1:x4=x2:x2=0:c=MID$(a$(3),1,3):IF c=MID$(c(26),1,3) THEN 8910
  639. 8905 IF xi(2)=0 THEN x2=999:RETURN ELSE f=8:y=6:GOSUB 2100:RETURN
  640. 8910 c=MID$(a$(4),1,3):IF c="" THEN PRINT c(26);:GOSUB 2600:GOTO 8910
  641. 8911 FOR i=0 TO 5:IF c=MID$(c(40+i),1,3) THEN x1=i:x2=1000:RETURN
  642. 8912 NEXT i:GOSUB 2200:IF x2<>0 THEN 8930ELSE GOSUB 2300:IF x2=0 THEN GOSUB 2400:IF x2=0 THEN GOSUB 2500:IF x2=0 THEN GOSUB 2960:RETURN
  643. 8915 PRINT c(11):RETURN
  644. 8929 '
  645. 8930 IF x1=0 THEN GOSUB 2990:RETURN
  646. 8940 IF x2>0 THEN f=10:y=1+INT(RND*2+1):GOSUB 2100:RETURN
  647. 8950 IF x1=2 THEN x2=999:RETURN
  648. 8960 IF x1=16 OR x1=28 THEN f=15:y=4:GOSUB 2100:RETURN
  649. 8970 IF x1=15 OR x1=18 OR x1=25 OR x1=26 THEN f=15:y=5:GOSUB 2100:RETURN ELSE PRINT c(11):RETURN
  650. 8990 'stab
  651. 9000 IF c<>MID$(c(39),1,3) THEN 9100
  652. 9010 GOSUB 8900:IF x2=1000 THEN PRINT c(11):RETURN
  653. 9020 IF x2<>999 THEN RETURN
  654. 9030 f(4)=f(4)+1:IF f(1)<20 THEN f=11:y=2:GOSUB 2100:RETURN
  655. 9040 'stab footprint
  656. 9080 RETURN
  657. 9090 'kill attack stab creature
  658. 9100 GOSUB 2500:IF x2<>0 THEN 9200
  659. 9102 GOSUB 2400:IF x2<>0 THEN PRINT c(11):RETURN
  660. 9105 GOSUB 2300:IF x2=0 THEN GOSUB 2200:IF x2=0 THEN GOSUB 2950:RETURN
  661. 9110 IF x1=0 THEN GOSUB 2980:RETURN ELSE f=15:y=5+INT(RND*2+1):GOSUB 2100:RETURN
  662. 9200 IF x1=0 THEN GOSUB 2980:RETURN
  663. 9210 GOSUB 8900:IF x2<999 THEN RETURN
  664. 9220 IF x2<>1000 THEN 9250
  665. 9230 IF x1=0 THEN f=16:y=1:GOSUB 2100:RETURN
  666. 9240 ON x1 GOTO 10000,10400,10800,11200,11600
  667. 9250 IF x4<0 THEN f=16:y=2:GOSUB 2100:RETURN
  668. 9260 x1=x3:f(4)=f(4)+1:ON ks(x1) GOTO 9272,9274,9276,9280,9282,9290,9300,9310,9320
  669. 9270 'attack with sword
  670. 9272 GOSUB 9481:RETURN
  671. 9274 f=22:y=8:GOSUB 2100:f(6)=f(6)+5:GOTO 9272
  672. 9276 f(18)=f(18)+1:IF f(18)=1 THEN GOSUB 9470:f(19)=6:RETURN
  673. 9278 IF f(18)=5 THEN f=22:y=10:GOSUB 2100:GOSUB 9481:f(6)=f(6)+10:f=22:y=4:GOSUB 2100:f(7)=4:RETURN ELSE f=22:y=9:GOSUB 2100:RETURN
  674. 9280 PRINT ol(x1);c(17):RETURN
  675. 9282 f=77:y=8:GOSUB 2100:RETURN
  676. 9290 GOSUB 9280:f=47:y=2:GOSUB 2100:f(9)=3:RETURN
  677. 9300 GOSUB 9470:f=53:y=2:GOSUB 2100:xd(1)=0:xl(2)=0:RETURN
  678. 9310 IF f(13)=2 THEN f(13)=4:f=97:y=4:GOSUB 2100:RETURN ELSE f=98:y=1:GOSUB 2100:RETURN
  679. 9320 f=98:y=4:GOSUB 2100:RETURN
  680. 9469 'creature wounded
  681. 9470 f=22:y=8:GOSUB 2100:f=22:y=6:GOSUB 2150:PRINT c(59);ol(x1);c:ok(x1)=c(58):RETURN
  682. 9480 'creature dead routine
  683. 9481 f=5:y=1:GOSUB 2150:ok(x1)=c:GOTO 9490
  684. 9482 f=5:y=2:GOSUB 2150:ok(x1)=c+c(20):GOTO 9490
  685. 9483 f=5:y=2:GOSUB 2150:ok(x1)=c:GOTO 9490
  686. 9484 'etc
  687. 9490 xl(x1)=-f(3):PRINT ol(x1);c(17):RETURN
  688. 9499 'eliminate unnecesary word for spell
  689. 9500 c=MID$(a$(2),1,3):IF c=MID$(c(24),1,3) THEN GOSUB 9560:GOTO 9500
  690. 9510 IF c=MID$(c(46),1,3) OR c=MID$(c(47),1,3) THEN GOSUB 9560:GOTO 9500
  691. 9520 IF c="" THEN PRINT cm" "c(24):RETURN ELSE x1=999:RETURN
  692. 9550 'shift words
  693. 9560 FOR i=2 TO x:a$(i)=a$(i+1):NEXT i:RETURN
  694. 9590 'check target
  695. 9600 x3=800:c=MID$(a$(2),1,3):GOSUB 2500:IF x2<>0 THEN 9630
  696. 9610 GOSUB 2400:IF x2<>0 THEN IF x1=0 THEN f=11:y=2:GOSUB 2100ELSE f=16:y=4:GOSUB 2100:RETURN
  697. 9615 GOSUB 2200:IF x2=0 THEN GOSUB 2300:IF x2=0 THEN GOSUB 2950:RETURN
  698. 9620 IF x1=0 THEN GOSUB 2980:RETURN ELSE f=16:y=4:GOSUB 2100:RETURN
  699. 9630 IF x1=0 THEN GOSUB 2980:RETURN
  700. 9640 IF x2<0 THEN f=16:y=2:GOSUB 2100:RETURN ELSE x3=900:RETURN
  701. 9649 'select spell flag
  702. 9650 IF f(f)=0 THEN f=16:y=4+INT(RND*2+1):GOSUB 2100:RETURN
  703. 9660 IF f(f)=1 THEN f=0:RETURN ELSE f=17:y=2:GOSUB 2100:RETURN
  704. 9690 'travel spell
  705. 9700 PRINT c(36):f=26:GOSUB 9650:IF f<>0 THEN RETURN
  706. 9710 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  707. 9720 f(4)=f(4)+1
  708. 9730 'travel spell check flag 33
  709. 9780 RETURN
  710. 9890 'light
  711. 9900 IF MID$(a$(2),1,3)<>"" THEN 10000
  712. 9910 PRINT c(32):f=22:GOSUB 9650:IF f<>0 THEN RETURN
  713. 9930 f(4)=f(4)+1:IF f(8)=0 THEN f(8)=1ELSE f(8)=0
  714. 9940 f=17:y=1:GOSUB 2100:RETURN
  715. 9990 'lightning bolt
  716. 10000 PRINT c(35):f=25:GOSUB 9650:IF f<>0 THEN RETURN
  717. 10010 GOSUB 9500:IF x1<>999 THEN RETURN
  718. 10020 GOSUB 9600:IF x3=800 THEN RETURN
  719. 10040 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  720. 10050 f(4)=f(4)+1:f=17:y=1:GOSUB 2100
  721. 10300 RETURN
  722. 10390 'disintegrate
  723. 10400 PRINT c(31):f=21:GOSUB 9650:IF f<>0 THEN RETURN
  724. 10410 GOSUB 9500:IF x1<>999 THEN RETURN
  725. 10420 GOSUB 9600:IF x3=800 THEN RETURN
  726. 10430 IF f(20)=0 THEN f=17:y=6:GOSUB 2100
  727. 10440 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  728. 10450 f(4)=f(4)+1:f=17:y=1:GOSUB 2100
  729. 10460 ON kd(x1) GOTO 10520,10500,10510,10530,10490,10550,10600
  730. 10480 IF f(20)<5 THEN f(7)=f(7)+4:f=77:y=4:GOSUB 2100
  731. 10481 RETURN
  732. 10490 xl(x1)=0:PRINT ol(x1);c(17):GOSUB 10480:RETURN
  733. 10500 f=12:y=2:GOSUB 2150:PRINT c(28);c:RETURN
  734. 10510 f(6)=f(6)+10:GOTO 10490
  735. 10520 f(6)=f(6)+5:GOTO 10490
  736. 10530 f(11)=3:f(30)=1:f(6)=f(6)+5:GOSUB 10490:RETURN
  737. 10550 f=98:y=2:GOSUB 2100:GOSUB 10490:IF f(13)=2 THEN f=98:y=3:GOSUB 2100:GOSUB 8500
  738. 10560 f(12)=0:f(6)=f(6)+15:f(13)=6:f=82:y=3:GOSUB 2100:GOSUB 2060:PRINT:RETURN
  739. 10600 GOSUB 10520:f=82:y=3:GOSUB 2100:GOSUB 2060:f=78:y=1:GOSUB 2100:PRINT:RETURN
  740. 10790 'fireball
  741. 10800 PRINT c(33):f=23:GOSUB 9650:IF f<>0 THEN RETURN
  742. 10810 GOSUB 9500:IF x1<>999 THEN RETURN
  743. 10820 GOSUB 9600:IF x3=800 THEN RETURN
  744. 10830 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  745. 10840 f(4)=f(4)+1:f=17:y=1:GOSUB 2100
  746. 11100 RETURN
  747. 11190 'wind blast
  748. 11200 PRINT c(34):f=24:GOSUB 9650:IF f<>0 THEN RETURN
  749. 11210 GOSUB 9500:IF x1<>999 THEN RETURN
  750. 11220 GOSUB 9600:IF x3=800 THEN RETURN
  751. 11230 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  752. 11240 f(4)=f(4)+1:f=17:y=1:GOSUB 2100
  753. 11250 ON kw(x1) GOTO 11300,11260,11310,11320,11330
  754. 11255 'blown away
  755. 11260 f=53:y=3:GOSUB 2110:f=54:y=2:GOSUB 2150:PRINT ol(x1);c:xl(x1)=0:RETURN
  756. 11300 f(6)=f(6)+5:f=83:y=2:GOSUB 2100:y=3:GOSUB 2100:xl(x1)=0:RETURN
  757. 11310 f(6)=f(6)+5:GOSUB 11260:f=47:y=3:GOSUB 2100:xd(1)=0:RETURN
  758. 11320 IF f(13)=2 THEN f=98:y=2:GOSUB 2100:y=3:GOSUB 2100:GOSUB 8500:RETURN ELSE f=98:y=1:GOSUB 2100:RETURN
  759. 11330 f(6)=f(6)+5:GOSUB 11260:RETURN
  760. 11590 'cold blast
  761. 11600 PRINT c(34):f=24:GOSUB 9650:IF f<>0 THEN RETURN
  762. 11610 GOSUB 9500:IF x1<>999 THEN RETURN
  763. 11620 GOSUB 9600:IF x3=800 THEN RETURN
  764. 11630 PRINT c(8):GOSUB 2080:IF NOT(c="y" OR c="Y") THEN RETURN
  765. 11640 f(4)=f(4)+1:f=17:y=1:GOSUB 2100
  766. 11650 ON kc(x1) GOTO 11700,11710,11720,11730,11740,11670
  767. 11660 'frozen dead
  768. 11670 f=5:y=4:GOSUB 2150:ok(x1)=c:xl(x1)=-f(3):PRINT ol(x1);c(17):RETURN
  769. 11700 f=83:y=4:GOSUB 2100:RETURN
  770. 11710 f=47:y=2:GOSUB 2100:f(9)=3:RETURN
  771. 11720 f(6)=f(6)+5:GOSUB 11670:RETURN
  772. 11730 IF f(13)=5 THEN f=98:y=1:GOSUB 2100:RETURN
  773. 11740 f=22:y=11:GOSUB 2100:RETURN
  774. 11990 'examine
  775. 12000 GOSUB 2300:IF x2=0 THEN 12400
  776. 12010 IF x1=0 THEN GOSUB 2980:RETURN
  777. 12030 f(4)=f(4)+1:ON et(x1) GOTO 12100,12110,12120,12130,12140,12148,12160,12170,12200,12210,12220,12230,12240,12250
  778. 12100 PRINT c(47+INT(RND*3+1));a$(2);c(16):RETURN
  779. 12110 f=9:y=1:GOSUB 2100:RETURN
  780. 12120 f=17:y=5:GOSUB 2150:PRINT c(29);c:RETURN
  781. 12130 IF f(13)=1 THEN f=17:y=7:GOSUB 2100:RETURN ELSE f(13)=1:f=9:y=4:GOSUB 2100:xi(5)=1:RETURN
  782. 12140 IF f(14)=2 THEN f=18:y=1:GOSUB 2100:RETURN
  783. 12145 IF f(14)=1 THEN f(14)=2:f=9:y=4:GOSUB 2100:xi(3)=9:f(6)=f(6)+5:RETURN ELSE f(14)=1:f=9:y=4:GOSUB 2100:xl(3)=9:RETURN
  784. 12148 IF f(15)=1 THEN f(15)=f(15)+1:f=9:y=4:GOSUB 2100:xl(4)=2:RETURN
  785. 12150 IF f(15)<>2 THEN f(15)=f(15)+1:f=17:y=5:GOSUB 2150:PRINT c(29);c:RETURN ELSE f(15)=f(15)+1:f=9:y=4:GOSUB 2150:PRINT c(28);c:xi(7)=2:RETURN
  786. 12160 IF xl(3)>0 THEN f=82:y=4:GOSUB 2100:RETURN ELSE 12100
  787. 12170 IF f(14)=0 THEN f(14)=1:f=9:y=4:GOSUB 2100:xi(10)=f(3):RETURN
  788. 12180 IF f(14)=1 THEN f(14)=2:IF xi(3)=999 THEN f=9:y=4:GOSUB 2100:xi(3)=f(3):RETURN
  789. 12190 f=18:y=1:GOSUB 2100:RETURN
  790. 12200 IF f(14)=2 THEN f=9:y=3:GOSUB 2100:RETURN ELSE f=8:y=4:GOSUB 2100:RETURN
  791. 12210 f=54:y=3:GOSUB 2100:RETURN
  792. 12220 IF xl(3)>0 THEN f=61:y=4:GOSUB 2100:RETURN ELSE f=65:y=3:GOSUB 2100:RETURN
  793. 12230 IF f(3)=66 THEN IF f(18)=0 OR f(18)=2 THEN xd(1)=-66:f=59:y=4:GOSUB 2100:IF f(18)=0 THEN f(18)=1:gd(1)=1019:f(17)=2:RETURN ELSE f(18)=3:gd(1)=9:gd(3)=2:f(6)=f(6)+5:RETURN
  794. 12233 IF f(3)=68 THEN IF f(17)=0 OR f(17)=2 THEN xd(2)=-68:f=59:y=4:GOSUB 2100:IF f(17)=0 THEN f(17)=1:gd(2)=1019:f(18)=2:RETURN ELSE f(17)=3:gd(2)=9:gd(3)=5:f(6)=f(6)+5:RETURN
  795. 12235 GOTO 12100
  796. 12240 f=61:y=3:GOSUB 2100:RETURN
  797. 12250 f=62:y=3:GOSUB 2100:RETURN
  798. 12390 '
  799. 12400 GOSUB 2400:IF x2=0 THEN 12800
  800. 12410 IF x1=0 THEN f=11:y=2:GOSUB 2100:RETURN
  801. 12430 f(4)=f(4)+1:ON ed(x1) GOTO 12450,12460,12470,12455,12480,12490
  802. 12450 PRINT c(47+INT(RND*3+1));a$(2);c(16):RETURN
  803. 12455 f=21:y=7:GOSUB 2100:RETURN
  804. 12460 IF f(16)=1 THEN 12455ELSE f(16)=1:f=9:y=5:GOSUB 2100:f(17)=1:xl(1)=4:RETURN
  805. 12470 f=10:y=1:GOSUB 2100:GOSUB 12455:RETURN
  806. 12480 IF f(19)>1 THEN f=31:y=2:GOSUB 2100:RETURN
  807. 12490 f=58:y=2:GOSUB 2100:RETURN
  808. 12790 '
  809. 12800 GOSUB 2200:IF x2=0 THEN 13200
  810. 12805 IF d(f(2),0)=3 OR d(f(2),0)=4 THEN IF ABS(x2)=9 THEN x1=ABS(x2)
  811. 12807 IF f(1)=4 AND x2=2 AND f(3)=xl(2) THEN f=72:y=2:GOSUB 2100:RETURN
  812. 12810 IF x1=0 THEN GOSUB 2980:RETURN
  813. 12820 f(4)=f(4)+1:ON INT((ei(x1)-1)/15)+1 GOTO 12830
  814. 12830 ON ei(x1) GOTO 12850,12860,12870,12910,12920,12960,13010,13060,13130
  815. 12840 '
  816. 12850 PRINT c(47+INT(RND*3+1));a$(2);c(16):RETURN
  817. 12860 IF f(31)=1 THEN f=15:y=3:GOSUB 2100
  818. 12865 IF f(34)=0 THEN f=18:y=6:GOSUB 2100:RETURN ELSE f=19:y=1:GOSUB 2100:RETURN
  819. 12870 IF f(35)=0 THEN f=19:y=2:GOSUB 2110:f=19:y=3:GOSUB 2150:PRINT cn;c:RETURN
  820. 12880 IF f(35)=1 OR f(35)=2 THEN IF f(18)=0 THEN f=59:y=2:GOSUB 2100:RETURN ELSE f=58:y=3:GOSUB 2110:f=19:GOSUB 2100:RETURN
  821. 12890 IF f(35)=3 THEN f=98:y=5:GOSUB 2150:PRINT c;:y=6:GOSUB 2100:RETURN
  822. 12900 IF f(35)=4 THEN f=98:y=5:GOSUB 2150:PRINT c;:f=99:y=1:GOSUB 2100:RETURN
  823. 12910 IF f(32)=1 THEN f=15:y=3:GOSUB 2100
  824. 12912 IF f(1)=1 THEN f=19:y=4:GOSUB 2100:RETURN
  825. 12913 IF f(1)=3 THEN f=19:y=5:GOSUB 2100:RETURN ELSE f=20:y=1:GOSUB 2100:RETURN
  826. 12920 IF xl(2)>0 AND f(3)=13 THEN x1=2:GOSUB 2765:RETURN
  827. 12930 IF f(36)=0 THEN f=20:y=3:GOSUB 2100:f=20:y=4:GOSUB 2100:f(36)=1:RETURN
  828. 12940 IF x2>0 THEN f=20:y=3:GOSUB 2100:RETURN ELSE f=20:IF f(37)<2 THEN y=5ELSE y=6
  829. 12950 GOSUB 2150:PRINT f(37);c:RETURN
  830. 12960 IF f(27)=0 THEN f=8:y=4:GOSUB 2150:PRINT c(29);c:RETURN
  831. 12970 IF f(27)=16 THEN f=21:y=1:GOSUB 2100:RETURN
  832. 12980 '
  833. 13000 f=20:y=7:GOSUB 2100:RETURN
  834. 13010 IF f(28)=0 THEN f=8:y=4:GOSUB 2150:PRINT c(29);c:RETURN
  835. 13020 IF f(28)=3 THEN f=39:y=1:GOSUB 2100:RETURN
  836. 13030 '
  837. 13050 f=20:y=7:GOSUB 2100:RETURN
  838. 13060 IF f(29)=0 THEN IF f(22)=0 THEN f=8:y=4:GOSUB 2100:RETURN ELSE f=21:y=1:GOSUB 2100:RETURN
  839. 13070 IF f(29)=1 THEN f=8:y=4:GOSUB 2100:RETURN
  840. 13075 IF f(29)=2 THEN IF f(1)=3 THEN f=21:y=1:GOSUB 2100:RETURN ELSE f=13:y=5:GOSUB 2150:PRINT c(29);c:RETURN
  841. 13080 '
  842. 13100 f=20:y=7:GOSUB 2100:RETURN
  843. 13120 '
  844. 13130 f(15)=f(15)+1:IF f(15)=2 THEN f=82:y=5:GOSUB 2150:PRINT c(28);c:f(41)=1:RETURN ELSE 12850
  845. 13140 '
  846. 13200 GOSUB 2500:IF x2=0 THEN GOSUB 2950:RETURN
  847. 13210 IF x1=0 THEN GOSUB 2980:RETURN
  848. 13220 f(4)=f(4)+1:IF xl(x1)<0 THEN f=18:y=2:GOSUB 2100:RETURN
  849. 13240 ON el(x1) GOTO 13300,13310,13320,13330,13340,13350
  850. 13300 PRINT c(47+INT(RND*3+1));a$(2);c(16):RETURN
  851. 13310 f=18:y=3:GOSUB 2100:RETURN
  852. 13320 f=18:y=4:GOSUB 2150:PRINT c;a$(2);c(16):RETURN
  853. 13330 f=67:y=3:GOSUB 2100:RETURN
  854. 13340 f=68:y=2:GOSUB 2100:RETURN
  855. 13350 y=2:IF f(3)>=48 AND f(3)<=59 THEN f=69:GOSUB 2100:RETURN ELSE f=71:GOSUB 2100:RETURN
  856. 15990 'next  set
  857. 16000 f(8)=0:GOSUB 3700:ON f(5) GOTO 16010,16020,16030,16040,16050,16060,16070,16080
  858. 16010 f(5)=0:RETURN
  859. 16020 f(5)=0:GOSUB 16400:f(2)=16:f(1)=2:oj(5)="":f=3:y=-32:GOSUB 16300:fx=5:RETURN
  860. 16030 f(5)=0:f=23:y=9:GOSUB 2150:oj(2)=c:xi(2)=43:f(35)=1:f(1)=3:f(2)=1:f(14)=0:xi(10)=33:xi(7)=999:oj(7)="":f(29)=1:fx=5:RETURN
  861. 16040 f(5)=0:f(1)=2:f(2)=7:f(11)=5:f(30)=0:f=48:y=-23:GOSUB 16300:fx=5:RETURN
  862. 16050 f(5)=0:f(1)=4:f(2)=15:GOSUB 16400:f=24:y=64:GOSUB 16300:fx=5:RETURN
  863. 16060 f(5)=0:f(1)=5:f(2)=13:f=64:y=-77:GOSUB 16300:fx=5:RETURN
  864. 16070 f(5)=0:f(1)=4:f(2)=15:f=77:y=64:GOSUB 16300:fx=5:RETURN
  865. 16080 f(5)=0:f=4:y=1:GOSUB 2100:f=100:y=2:GOSUB 2100:PRINT:GOSUB 3700:PRINT:fx=6:RETURN
  866. 16290 'move item next  set
  867. 16300 FOR i=1 TO 12:IF ABS(xi(i))=f THEN xi(i)=y
  868. 16310 NEXT:RETURN
  869. 16390 'reset flag
  870. 16400 FOR i=11 TO 19:f(i)=0:NEXT:RETURN
  871. 16450 FOR i=21 TO 26:f(i)=0:NEXT:FOR i=1 TO 30:xi(i)=999:NEXT:RETURN
  872. 16490 'death
  873. 16500 f(7)=0:f(38)=0:f(10)=f(10)+1:f(6)=f(6)-f(1):f=7:y=4:GOSUB 2100:IF f(10)>7 THEN 16590
  874. 16510 ON f(9) GOTO 16520,16530,16540,16590,16590,16600
  875. 16520 f(9)=0:f(2)=11:GOTO 16700
  876. 16530 f(9)=0:f(2)=16:xl(3)=19:xl(4)=17:GOSUB 16400:GOTO 16700
  877. 16540 f(9)=0:f(17)=0:f(19)=0:xd(8)=0:f(2)=1:GOTO 16700
  878. 16590 f(9)=0:GOSUB 16450:f(2)=0:fx=2:GOSUB 2060:RETURN
  879. 16600 f(9)=0:f(2)=7:f(11)=5:IF xl(4)>0 THEN xl(4)=23
  880. 16700 f=39:y=2:GOSUB 2100:fx=2:GOSUB 2060:RETURN
  881.